#ifndef SEARCHRESULTGUI_H
#define SEARCHRESULTGUI_H

#include <QObject>

namespace dcpp{
    class SearchResult;
}

/** Обёртка вокруг SearchResult для публикации в qml
 *
 * @author Василий Почкаенко.
 */
class SearchResultGUI : public QObject{
    Q_OBJECT

    /** Имя файла.*/
    Q_PROPERTY(QString fileName READ fileName NOTIFY fileNameChange)
    /** SlotString.*/
    Q_PROPERTY(QString slotString READ slotString NOTIFY slotStringChange)
    /** Файл.*/
    Q_PROPERTY(QString file READ file NOTIFY fileChange)
    /** URL хаба.*/
    Q_PROPERTY(QString hubURL READ hubURL NOTIFY hubURLChange)
    /** Имя хаба.*/
    Q_PROPERTY(QString hubName READ hubName NOTIFY hubNameChange)
    /** Размер.*/
    Q_PROPERTY(qint64 size READ size NOTIFY sizeChange)
    /** Тип.*/
    Q_PROPERTY(QString type READ type NOTIFY typeChange)
    /** Слоты.*/
    Q_PROPERTY(int slots_ READ slots_ NOTIFY slotsChange)
    /** Свободные слоты.*/
    Q_PROPERTY(int freeSlots READ freeSlots NOTIFY freeSlotsChange)
    /** TTH.*/
    Q_PROPERTY(QString TTH READ TTH NOTIFY TTHChange)
    /** IP.*/
    Q_PROPERTY(QString IP READ IP NOTIFY IPChange)
    /** token.*/
    Q_PROPERTY(QString token READ token NOTIFY tokenChange)
private:
    /** Уаказатель на расширяемый объект.*/
    dcpp::SearchResult *m_searchResult;
public:
    explicit SearchResultGUI(dcpp::SearchResult *searchResult, QObject *parent = 0);

    /** Имя файла.*/
    const QString & fileName() const;
    /** SlotString.*/
    const QString & slotString() const;
    /** Файл.*/
    const QString & file() const;
    /** URL хаба.*/
    const QString & hubURL() const;
    /** Имя хаба.*/
    const QString & hubName() const;
    /** Размер.*/
    qint64 size() const;
    /** Тип.*/
    const QString & type() const;
    /** Слоты.*/
    int slots_() const;
    /** Свободные слоты.*/
    int freeSlots() const;
    /** TTH.*/
    const QString & TTH() const;
    /** IP.*/
    const QString & IP() const;
    /** token.*/
    const QString & token() const;
signals:
    /** Изменилось имя файла.*/
    void fileNameChange();
    /** Изменилось поле пользователь.*/
    void userChange();
    /** Изменилось поле SlotString.*/
    void slotStringChange();
    /** Изменилось поле файл.*/
    void fileChange();
    /** Изменилось URL хаба.*/
    void hubURLChange();
    /** Изменилось имя хаба.*/
    void hubNameChange();
    /** Изменился размер.*/
    void sizeChange();
    /** Изменился тип.*/
    void typeChange();
    /** Изменилось поле слоты.*/
    void slotsChange();
    /** Изменилось поле свободные слоты.*/
    void freeSlotsChange();
    /** Изменилось поле TTH.*/
    void TTHChange();
    /** Изменился IP.*/
    void IPChange();
    /** Изменилось поле token.*/
    void tokenChange();
};

#endif // SEARCHRESULTGUI_H
